package com.tripcube.ai.serializer;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import org.springframework.util.StringUtils;

import java.io.IOException;

/**
 * 空字符串转null反序列化器
 * 
 * @author alander
 */
public class EmptyStringToNullDeserializer extends JsonDeserializer<String> {
    
    /**
     * 反序列化字符串值
     * 
     * 将JSON中的字符串值进行反序列化处理，如果字符串为空或仅包含空白字符，
     * 则返回null；否则返回原始字符串值。
     * 
     * @param p JSON解析器，用于读取JSON数据
     * @param ctxt 反序列化上下文，提供反序列化过程中的上下文信息
     * @return 处理后的字符串值，空字符串将被转换为null
     * @throws IOException 当JSON解析过程中发生IO异常时抛出
     */
    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String value = p.getValueAsString();
        if (!StringUtils.hasText(value)) {
            return null;
        }
        return value;
    }
}

